class UniStorage {
  // 设置存储项
  private static DEFAULT_EXPIRES = 3 * 24 * 60 * 60 // 3天，以秒为单位

  // 设置存储项
  static setItem(key: string, value: any, expires?: number): void {
    const expiresIn = expires !== undefined ? expires : this.DEFAULT_EXPIRES
    const item = {
      value,
      expires: new Date().getTime() + expiresIn * 1000,
    }
    uni.setStorageSync(key, JSON.stringify(item))
  }

  // 获取存储项
  static getItem(key: string): any {
    const itemStr = uni.getStorageSync(key)
    if (!itemStr) return null

    const item = JSON.parse(itemStr)

    // 检查是否过期
    if (item.expires && new Date().getTime() > item.expires) {
      uni.removeStorageSync(key)
      return null
    }

    return item.value
  }

  // 移除存储项
  static removeItem(key: string): void {
    uni.removeStorageSync(key)
  }

  // 清空所有存储
  static clear(): void {
    uni.clearStorageSync()
  }

  // 获取所有key
  static getKeys(): string[] {
    return uni.getStorageInfoSync().keys
  }

  // 检查key是否存在
  static hasKey(key: string): boolean {
    return this.getKeys().includes(key)
  }
}

export default UniStorage
